//package com.bestcem.xm.common.core.uitls;
//
//import org.springframework.stereotype.Component;
//
//import java.util.List;
//
///**
// * @author dc.wang <dc.wang@idiaoyan.com>
// * @version V1.0
// * @description
// * @date 2021/7/23
// */
//@Component
//public class MysqlOperatorMapper {
//
//    public static String mappingOperator(String fieldName, Object data, OperatorTypeEnum operatorTypeEnum) {
//        switch (operatorTypeEnum) {
//            case EQ:
//                return String.format("%s = '%s'", fieldName, data);
//            case NE:
//                return String.format("%s != '%s'", fieldName, data);
//            case IN:
//                return String.format("%s in ('%s')", fieldName, String.join(",'", ((List) data)));
//            case NIN:
//                return String.format("%s not in ('%s')", fieldName, String.join(",'", ((List) data)));
//            case GT:
//                return String.format("%s > '%s'", fieldName, data);
//            case GTE:
//                return String.format("%s >= '%s'", fieldName, data);
//            case LT:
//                return String.format("%s < '%s'", fieldName, data);
//            case LTE:
//                return String.format("%s <= '%s'", fieldName, data);
//            case REGEX:
//                return String.format("%s like '%%%s%%'", fieldName, data);
//            case NOR_REGEX:
//                return String.format("%s not like '%%%s*%%'", fieldName, data);
//            case EXISTS:
//                return String.format("%s != ''", fieldName);
//            case NOR_EXISTS:
//                return String.format("(%s = null or  %s = '')", fieldName, fieldName);
//            default:
//                return null;
//            // throw exception
//        }
//    }
//
//    public static String mappingJsonOperator(String fieldName, Object data, OperatorTypeEnum operatorTypeEnum) {
//        switch (operatorTypeEnum) {
//            case EQ:
//                return String.format("%s = '%s'", fieldName, data);
//            case NE:
//                return String.format("%s != '%s'", fieldName, data);
//            case IN:
//                return String.format("%s in ('%s')", fieldName, String.join(",'", ((List) data)));
//            case NIN:
//                return String.format("%s not in ('%s')", fieldName, String.join(",'", ((List) data)));
//            case GT:
//                return String.format("%s > '%s'", fieldName, data);
//            case GTE:
//                return String.format("%s >= '%s'", fieldName, data);
//            case LT:
//                return String.format("%s < '%s'", fieldName, data);
//            case LTE:
//                return String.format("%s <= '%s'", fieldName, data);
//            case REGEX:
//                return String.format("%s like '%%%s%%'", fieldName, data);
//            case NOR_REGEX:
//                return String.format("%s not like '%%%s%%'", fieldName, data);
//            case EXISTS:
//                return String.format("%s != ''", fieldName);
//            case NOR_EXISTS:
//                return String.format("(%s = null or  %s = '')", fieldName, fieldName);
//            default:
//                return null;
//            // throw exception
//        }
//    }
//
//    /**
//     * 前端传参与列名映射关系
//     *
//     * @param name 前端传参
//     * @return 列名
//     */
//    public static String memberColumnMapping(String name) {
//        switch (name) {
//            case "institut_name":
//                return "institute_name";
//            case "contractNo":
//                return "contract_no";
//            case "mobile":
//                return "phone";
//            case "store":
//                return "store_id";
//            default:
//                return name;
//        }
//    }
//
//    /**
//     * 前端传参与列名映射关系
//     *
//     * @param name 前端传参
//     * @return 列名
//     */
//    public static String projectColumnMapping(String name) {
//        switch (name) {
//            case "m_project_name":
//                return "name";
//            case "m_project_code":
//                return "code";
//            case "m_p_type":
//                return "type";
//            case "contractNo":
//                return "contract_no";
//            case "account_manager":
//                return "account_manager_name";
//            case "project_manager":
//                return "project_manager_name";
//            case "project_manager_mobile":
//                return "project_manager_phone";
//            case "m_p_status":
//                return "status";
//            case "program_start":
//                return "program_start_time";
//            case "actual_start":
//                return "actual_start_time";
//            default:
//                return name;
//        }
//    }
//
//    public enum OperatorTypeEnum {
//        EQ,
//        NE,
//        IN,
//        NIN,
//        GT,
//        GTE,
//        LT,
//        LTE,
//        REGEX,
//        NOR_REGEX,
//        EXISTS,
//        NOR_EXISTS;
//
//        public boolean isNorOperation(){
//            switch (this){
//                case NE:
//                case NIN:
//                case NOR_REGEX:
//                case NOR_EXISTS:
//                    return Boolean.TRUE;
//                default: return Boolean.FALSE;
//            }
//        }
//    }
//
//    public enum ColumnTypeEnum {
//        JSON,
//        BINARY
//    }
//}
